/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package myftp.core.view.listener;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPopupMenu;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.tree.TreePath;
import myftp.core.controller.FrontController;
import myftp.app.view.ServerTabPartView;
import myftp.core.action.PopUpAction;

/**
 *
 * @author CAVARLE Glenn, LUCAS Stéphane
 * Listener du tableau des fichiers
 */
public class FileTableListener implements MouseListener {

    public FrontController controller;
    public ServerTabPartView tab;

    public FileTableListener(ServerTabPartView tab) {
        this.controller = FrontController.getInstance();
        this.tab = tab;
    }

    public String getPath(JTree aTree) {
        /* Récupération du chemin d'accès au dossier courant */

        String path = "";
        TreePath Tpath = aTree.getLeadSelectionPath();
        if (Tpath == null) {
            return null;
        }
        int nbDir = Tpath.getPathCount();
        Object[] tabPath = Tpath.getPath();

        for (int i = 1; i < nbDir; i++) {
            path = path + "/" + tabPath[i];
        }
        return path;
    }

    public void mousePressed(MouseEvent e) {
        /* Si un clique droit est effectué */
        if (SwingUtilities.isRightMouseButton(e)) {
            /* Récupération du tableau */
            JTable table = (JTable) e.getSource();
            /* Récupération de la ligne sélectionné */
            int selectedRow = table.rowAtPoint(e.getPoint());
            /* Si le clique n'a pas lieu sur une ligne sélectionnée,
            celle-ci devient automatiquement la sélection courante */
            table.changeSelection(selectedRow, -1, false, false);

            /* Le popup est créé */
            TablePopup popup = new TablePopup(this, table, selectedRow);

            /* Le popup est affiché au niveau du curseur de la souris */
            popup.showPopup(e);
        }
    }

    public void mouseClicked(MouseEvent event) {
        /* Si un double-clique est effectué */
        if (event.getClickCount() == 2) {

            /* Récupération de la Table */
            JTable currentTable = (JTable) event.getSource();
            /* Lancement du transfert */
            doTransfert(currentTable);
        }
    }

    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

    public void doTransfert(JTable currentTable) {
    }

    public void createDir(JTable currentTable) {
    }

    public void deleteDir(JTable currentTable) {
    }

    public void deleteFile(JTable currentTable) {
    }

    public void refreshList(JTable currentTable) {
    }

    private class TablePopup {

        private JPopupMenu tablePopup;
        private int aSelectedRow;
        private JTable aTable;
        private FileTableListener listener;

        public TablePopup(FileTableListener listener, JTable aTable, int aRow) {
            this.listener = listener;
            this.aTable = aTable;
            this.tablePopup = new JPopupMenu();
            /* Ajout des choix possible dans le popup */
            tablePopup.add(new PopUpAction(listener, aTable, "Créer un Dossier"));
            tablePopup.add(new PopUpAction(listener, aTable, "Télécharger"));
            tablePopup.add(new PopUpAction(listener, aTable, "Supprimer"));
            tablePopup.add(new PopUpAction(listener, aTable, "Rafraichir"));
        }

        protected void showPopup(MouseEvent e) {
            /* Affichage du popup au niveau du curseur de la souris */
            if (e.isPopupTrigger()) {
                tablePopup.show(e.getComponent(), e.getX(), e.getY());
            }
        }
    }
}
